/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package servidorbancos.resources;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 *
 * @author luiz.perez
 */
public final class AgenciaUtil {
    private List<Agencia> lista;

    public AgenciaUtil(List<Agencia> lista, double lat, double lon)
    {
        this.lista = new ArrayList<Agencia>(lista);
        CalculaDistanciaAgencias(lat, lon);
    }

    public void CalculaDistanciaAgencias(double lat, double lon)
    {
        for (Agencia agencia : lista)
        {
            agencia.setDistancia(Distancia.distanciaKM(lat, lon, agencia.lat, agencia.lon));
        }
        Collections.sort(lista);
//        for (Agencia agencia : lista)
//        {
//            System.out.println("Dist: " + agencia.getDistancia());
//        }
    }

    public List<Agencia> GetAgenciasProximas(int BB, int Santander, int Itau, int Caixa, int Bradesco, int HSBC, int Horas24, int Citibank, int Safra, int Sudameris)
    {
        List<Agencia> agenciasProximas = new ArrayList<Agencia>();
        int nBB = 0, nSantander = 0, nItau = 0, nCaixa = 0, nBradesco = 0, nHSBC = 0, nHoras24 = 0, nCitibank = 0, nSafra = 0, nSudameris = 0;
        for (Agencia agencia : lista) {
            if(agencia.getBanco() == 0 && nBB < BB)
            {
                agenciasProximas.add(agencia);
                nBB++;
            }
            if(agencia.getBanco() == 1 && nSantander < Santander)
            {
                agenciasProximas.add(agencia);
                nSantander++;
            }
            if(agencia.getBanco() == 2 && nItau < Itau)
            {
                agenciasProximas.add(agencia);
                nItau++;
            }
            if(agencia.getBanco() == 3 && nCaixa < Caixa)
            {
                agenciasProximas.add(agencia);
                nCaixa++;
            }
            if(agencia.getBanco() == 4 && nBradesco < Bradesco)
            {
                agenciasProximas.add(agencia);
                nBradesco++;
            }
            if(agencia.getBanco() == 5 && nHSBC < HSBC)
            {
                agenciasProximas.add(agencia);
                nHSBC++;
            }
            if(agencia.getBanco() == 6 && nHoras24 < Horas24)
            {
                agenciasProximas.add(agencia);
                nHoras24++;
            }
            if(agencia.getBanco() == 7 && nCitibank < Citibank)
            {
                agenciasProximas.add(agencia);
                nCitibank++;
            }
            if(agencia.getBanco() == 8 && nSafra < Safra)
            {
                agenciasProximas.add(agencia);
                nSafra++;
            }
            if(agencia.getBanco() == 9 && nSudameris < Sudameris)
            {
                agenciasProximas.add(agencia);
                nSudameris++;
            }
        }
//        for (Agencia agencia : agenciasProximas)
//        {
//            System.out.println(agencia);
//        }
        return agenciasProximas;
    }

}
